package com.ciei.dpagm.common.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;

import java.util.ArrayList;
import java.util.List;

/**
 * @author pp
 * @date 2023/03/11
 */
public enum FactModeEnum {


    /**
     * 获取所有字段名称
     */
    ALL_KEY_NAME(1001, "获取所有字段名称", 0),
    /**
     * 获取字段值数据类型
     */
    KEY_VALUE_DATA_TYPE(1004, "获取字段值数据类型", 0),

    // --------------------------------- 二级 ---------------------------------

    /**
     * 获取所有字段名称-选择参数
     */
    ALL_KEY_NAME_SELECT_PARAMETER(2002, "选择变量", 1001),

    /**
     * 获取字段值数据类型-选择参数
     */
    KEY_VALUE_DATA_TYPE_SELECT_PARAMETER(2011, "选择变量", 1004);

    /**
     * id
     */
    @EnumValue
    private Integer id;

    /**
     * 名称
     */
    private String name;
    /**
     * 父id
     */
    private Integer parentId;


    FactModeEnum(Integer id, String name, Integer parentId) {
        this.id = id;
        this.name = name;
        this.parentId = parentId;
    }

    public Integer getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public Integer getParentId() {
        return parentId;
    }

    public static FactModeEnum getEnumByValue(int value) {
        for (FactModeEnum factModeEnum : values()) {
            if (factModeEnum.getId() == value) {
                return factModeEnum;
            }
        }
        return null;
    }

    /**
     * 获取选择参数类型(精确到参数类型)事实方式id列表
     *
     * @return
     */
    public static List<Integer> getSelectParameterTypeFactModeIdList() {
        List<Integer> selectParameterTypeFactModeIdList = new ArrayList<>();
        selectParameterTypeFactModeIdList.add(ALL_KEY_NAME_SELECT_PARAMETER.getId());
        return selectParameterTypeFactModeIdList;
    }

    /**
     * 获取选择参数事实方式id列表
     *
     * @return
     */
    public static List<Integer> getSelectParameterFactModeIdList() {
        List<Integer> selectParameterTypeFactModeIdList = new ArrayList<>();
        selectParameterTypeFactModeIdList.add(KEY_VALUE_DATA_TYPE_SELECT_PARAMETER.getId());
        return selectParameterTypeFactModeIdList;
    }

}
